home *** CD-ROM | disk | FTP | other *** search
/ Oh!X 2000 Spring / Oh!X 2000 Spring Special CD-ROM (Japan) (Part 1).7z / Oh!X 2000 Spring Special CD-ROM (Japan) (Part 1).bin / X68CD / CDDUMP.C < prev    next >
C/C++ Source or Header  |  2000-01-30  |  1KB  |  65 lines

  1. /*    CDDUMP
  2. */
  3.  
  4. #include    <stdio.h>
  5. #include    <iocslib.h>
  6.  
  7. int    main(argc,argv)
  8. int    argc;
  9. char    *argv[];
  10. {
  11.     int    pos, pos_st=0, pos_et, len=327680;
  12.     int    block=1, id=6, size=4;        //size:1=512byte/sec,4=2048byte/sec
  13.     int    ac,x,y,ibuf;
  14.     unsigned char    buf[2048];
  15.     
  16.     for( ac=1; ac<argc; ac++ ){;if( argv[ac][0]=='/' || argv[ac][0]=='-' ){
  17.         switch( argv[ac][1] ){
  18.             case 'i': case 'I':
  19.                 sscanf(&argv[ac][2],"%d",&id);
  20.             break;
  21.             case '$': case 'X':
  22.                 sscanf(&argv[ac][2],"%x,%x",&pos_st,&len);
  23.             break;
  24.             case '1': case '2': case '3': case '4': case '5': 
  25.             case '6': case '7': case '8': case '9': case '0':
  26.                 sscanf(&argv[ac][1],"%d,%d",&pos_st,&len);
  27.             break;
  28.             default:
  29.                 printf("X68k CD-Dump v0.00 \n"
  30.                 "使用法::cddump [/In] [/ブロック,長さ]\n\n"
  31.                 "\tアドレス指定、長さ指定は先頭に X か $ を付けると\n"
  32.                 "\t16進数になります\n"
  33.                 "\t/In:nにはCD-ROMのSCSI-IDを設定します(デフォルト=6)\n"
  34.                 );
  35.                 goto quick_exit;
  36.             break;
  37.         }
  38.     }}
  39.  
  40.     pos_et=pos_st+len-1;
  41.     for( pos=pos_st; pos<=pos_et; pos++ ){
  42.         S_READ(pos,block,id,size,buf);
  43.         for( y=0;y<128;y++ ){
  44.             for( x=0;x<16;x++ ){
  45.                 printf("%02x ",buf[y*16+x]);
  46.             }
  47.             for( x=0;x<16;x++ ){
  48.                 printf("%c",(buf[y*16+x]<=0x1f)?'.':buf[y*16+x]);
  49.             }
  50.             ibuf=(int)buf[y*16+x];
  51.             if( (0x80<=ibuf && ibuf<=0x9F) || (0xE0<=ibuf && ibuf<=0xFF) ){
  52.                 printf("%c",'\x40');
  53.             }
  54.             printf("\n");
  55.         }
  56.     }
  57. quick_exit:
  58.     return(0);
  59. }
  60.  
  61.  
  62.  
  63. /* [ EOF ] */
  64.  
  65.